#ifndef HEADER_GENERATEUR
#define HEADER_GENERATEUR

#include <SDL/SDL.h>
#include <vector>
#include <iterator>

#include "Monstre/Monstre.h"
#include "Accessoir/Accessoir.h"
#include "PlateForme/PlateForme.h"

#include "ListeChainee.h"


/***************************** STOCKER LES CUBE DANS UN TABLEAU EN FONCTION DES X EST PLUS JUDICIEUX ****************/
class Generateur{

public:
	Generateur(SDL_Surface *ecran ,int mode);
	void initialisation();//initialise la map
	void affichage(int decEffectif ,int decalageCumul , SDL_Rect position );

	void setMode(int mode);

	vector<PlateForme*> getTabCube();
	vector<Monstre*> getTabMonstre();
	vector<Accessoir*> getTabAccessoir();
private:
	PlateForme* retournerPlateForme(SDL_Rect pos ,int decalageCumul);
	Monstre* retournerMonstre(SDL_Rect pos ,int decalageCumul);
	Accessoir* assocAccesoir(PlateForme* c , int decalageCumul);

	bool supperposition(PlateForme *c);//retourne vrai si il y a une superposition entre l'un des autres cubse dans la map


	SDL_Surface *ecran;
	int mode;
	//ces 3 variables servent a placer les cube aleatoirement sur le plateau
    int max;//la heuteur max au quel on peu placer
    int min;//la hauteur min au quel on peu placer
    int actMin;//la hauteur actuel a la quel on peu placer le cube pour que l'on puisse suater sur tout les plateforme
    int actMax;
	vector<PlateForme*> tabC ;//la table de toute les platteforme
	vector<Monstre*> tabMons ;//la table de tout les monstre
	vector<Accessoir*> tabAcces;//la table qui contient tout les accessoir a afficher

};
#endif
